package com.hopes.bizz.enforcement.hid.dto;


import com.hopes.bizz.enforcement.hid.validate.HidAssignGroup;
import com.hopes.boss.common.core.util.ValidGroup;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * @author lyb
 * @version 1.0
 * @date 2023/3/16 10:40
 */
@Data
public class RiskHidHiddenDangerDTO implements Serializable {
    private static final long serialVersionUID = -9107287351134828819L;
    /**
     * 标识
     */
    @NotNull(message = "唯一标识为必填项", groups = ValidGroup.Update.class)
    private Long id;

    /**
     * 企业id
     */
    private Long companyId;


    /**
     * 模块来源
     */
    private String moduleSource;

    /**
     * 风险对象编码
     */
    private String hazardCode;

    /**
     * 管控措施ID
     */
    private Long riskControlId;

    /**
     * 风险单元id
     */
    private Long riskUnitId;

    /**
     * 隐患排查记录ID
     */
    private Long checkRecordId;

    /**
     * 源业务编码
     */
    private String bizCode;

    /**
     * 源业务标识
     */
    private Long bizId;
    /**
     * 源业务名称
     */
    private String bizName;
    /**
     * 区域标识
     */
    private Long hidAreaId;

    /**
     * 隐患名称
     */
    @NotBlank(message = "隐患名称为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private String hidName;

    /**
     * 隐患来源
     */
    @NotNull(message = "隐患来源为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private Integer hidSource;

    /**
     * 隐患类型
     */
    @NotNull(message = "隐患来源为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private Integer hidType;


    /**
     * 隐患类别（其他隐患：0 主要负责人隐患：1 技术负责人隐患：2 操作负责人隐患：3）默认为其他隐患：0
     */
    private Integer hidCategory;

    /**
     * 隐患描述
     */
    @NotBlank(message = "隐患描述为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private String hidContent;

    /**
     * 隐患等级
     */
    @NotNull(message = "隐患等级为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private Integer hidLevel;

    /**
     * 原因分析
     */
    private String hidReason;

    /**
     * 隐患位置
     */
    private String hidLocation;

//    /**
//     * 责任部门
//     */
//    @NotNull(message = "责任部门为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
//    private Long deptId;
    /**
     * 上报人员
     */
    @NotNull(message = "上报人为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private Long reportUserId;
//    /**
//     * 上报部门
//     */
//    @NotNull(message = "上报部门为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
//    private Long reportDeptId;
    /**
     * 上报整改图片
     */
    @NotBlank(message = "整改图片人为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private String reportPhoto;
    /**
     * 上报视频
     */
    private String reportVideo;
    /**
     * 是否直接指派
     */
    @NotNull(message = "直接指派标识为必填项", groups = {ValidGroup.Insert.class, ValidGroup.Update.class})
    private Boolean assignFlag;

    /**
     * 负责人
     */
    @NotBlank(message = "整改负责人为必填项", groups = {HidAssignGroup.class})
    private String principal;

    /**
     * 整改方式 1:立即整改   2:限期整改
     */
    @NotNull(message = "整改方式为必填项", groups = {HidAssignGroup.class})
    private Integer correctiveWay;
    /**
     * 整改措施
     */
    @NotBlank(message = "整改措施为必填项", groups = {HidAssignGroup.class})
    private String correctiveDesc;
    /**
     * 整改建议
     */
    @NotBlank(message = "整改建议为必填项", groups = {HidAssignGroup.class})
    private String correctiveAdviceDesc;

    /**
     * 整改期限
     */
    @NotNull(message = "整改方式为必填项", groups = {HidAssignGroup.class})
    private Date correctiveDeadline;

    /**
     * 备注
     */
    private String remarks;

    /**
     * 经度
     */
    private String longitude;

    /**
     * 纬度
     */
    private String latitude;
}
